package com.seka.control.utils;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * 字符串帮助类，提供字符串的拼接、判空、转换等方法
 * @since 1.0
 */
public final class StringHelper {
	 /* static methods only - hide constructor */
	private StringHelper() {
	}
	/**
	 * 拼接字符串
	 * 
	 * @return
	 */
	public static String join(String seperator, String[] strings) {
		int length = strings.length;
		if (length == 0)
			return "";
		StringBuffer buf = new StringBuffer(length * strings[0].length())
				.append(strings[0]);
		for (int i = 1; i < length; i++) {
			buf.append(seperator).append(strings[i]);
		}
		return buf.toString();
	}

	/**
	 * 拼接字符串
	 * @return
	 */
	public static String join(String seperator, Iterator<?> objects) {
		StringBuffer buf = new StringBuffer();
		if (objects.hasNext())
			buf.append(objects.next());
		while (objects.hasNext()) {
			buf.append(seperator).append(objects.next());
		}
		return buf.toString();
	}
	
	/**
	 * 拼接字符串
	 * @param seperator 分隔符
	 * @param args 参数
	 * @return
	 */
	public static  <T>  String joinObjects(String seperator, T ... args) {
		int length = args.length;
		if (length == 0)
			return "";
		StringBuffer buf = new StringBuffer()
				.append(args[0]);
		for (int i = 1; i < length; i++) {
			buf.append(seperator).append(args[i]);
		}
		return buf.toString();
	}
	
	/**
	 * 字符串是否不为null或者也非空串
	 * 
	 * @param string
	 * @return
	 */
	public static boolean isNotEmpty(String string) {
		return string != null && string.length() > 0;
	}

	/**
	 * 字符串是否不为null，也非全由空格构成
	 * 
	 * @param string
	 * @return
	 */
	public static boolean isNotEmptyByTrim(String string) {
		return string != null && string.length() > 0
				&& string.trim().length() > 0;
	}

	/**
	 * 字符串为null或者空串
	 * 
	 * @param string
	 *            输入的字符串
	 * @return
	 */
	public static boolean isEmpty(String string) {
		return string == null || string.length() == 0;
	}

	/**
	 * 字符串为null或者由空格构成
	 * 
	 * @param string
	 *            输入的字符串
	 * @return
	 */
	public static boolean isEmptyByTrim(String string) {
		return string == null || string.length() == 0
				|| string.trim().length() == 0;
	}

	/**
	 * 是否任意字符串参数为空
	 * 
	 * @param args
	 *            参数数组
	 * @return
	 */
	public static boolean isAnyEmpty(String... args) {
		for (String str : args) {
			if (isEmpty(str)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 是否任意字符串参数非空
	 * 
	 * @param args
	 *            字符串参数数组
	 * @return
	 */
	public static boolean isNotAnyEmpty(String... args) {
		return !isAnyEmpty(args);
	}

	/**
	 * 将字符串字母转换成大写字母
	 * 
	 * @return
	 */
	public static String toUpperCase(String str) {
		return str == null ? null : str.toUpperCase();
	}

	/**
	 * 将字符串字母转换成小写字母
	 * 
	 * @return
	 */
	public static String toLowerCase(String str) {
		return str == null ? null : str.toLowerCase();
	}

	/**
	 * 去除字符串中的空格
	 * 
	 * @return
	 */
	public static String dealNull(String str) {
		return str == null ? "" : str.trim();
	}

	public static Object dealNull(Object str) {
		return str == null ? "" : str;
	}

 
	/**
	 * 以逗号为分隔符，将字符串转换为String[]
	 * 
	 * @param str
	 * @return 返回字符串数组
	 */
	public static String[] strToArr(String str) {
		if (StringHelper.isNotEmpty(str)) {
			return str.split(",");
		}
		return null;
	}

	/**
	 * 以逗号为分隔符，将字符串转换为List
	 * 
	 * @param str
	 * @return 返回字符串列表
	 */
	public static List<String> strToList(String str) {
		if (StringHelper.isNotEmpty(str)) {
			return Arrays.asList(str.split(","));
		}
		return null;
	}

  
	 
}
